<?php

/*** Created by PhpStorm.
 * * User: liuxiang
 * * Date: 16/7/20
 * * Time: 17:29
 * */
class TestIterator
{
    /**  
     * @var string 
     */
    public $name  = 'PHP';

    /** 
     * @var string  
     */
    public $address = 'php.net';

    /**  
     * @var string  
     */
    protected $sex = 'man';
    /** 
     * @var int  
     */
    private $age  = 20;

    // 如果需要遍历对象的不可见属性，则在对象内部定义一个遍历方法：
    public function unAccessIterator()
    {
        echo 'Iterator the unaccess fields:' . PHP_EOL;
        foreach ($this as $key => $value) {
            echo $key . ':' . $value . PHP_EOL;
        }
    }
}

$testIterator = new TestIterator();
foreach ($testIterator as $key => $value) {
    echo $key . ':' . $value . PHP_EOL;
}
//      输出的是：
//      name:PHP
//      address:php.net

$testIterator->unAccessIterator();
//   将可以遍历对象的不可见属性，输出结果：
//   Iterator the unaccess fields:
//   name:PHP
//   address:php.net
//   sex:man
//   age:20